<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <!-- 引入 React 核心库 -->
  <script src="../js/react.development.js"></script>
  <!-- 用于支持 React操作DOM -->
  <script src="../js/react-dom.development.js"></script>
  <!-- 用于将 jsx转为js -->
  <script src="../js/babel.min.js"></script>
</head>

<body>
  <div id="root"></div>

  <script type="text/babel">
    // 整个构造器只会调一次
    class A extends React.Component{
      state = {msg: 'aaaaaa'}
      Change = () => {
        this.setState({msg: 'bbbbbbb'})
      } 
      render() {
        // onChange: 返回的只能是个函数，
        return (
          <div>
            <div>我是A组件</div>
            <button onClick={this.Change}>点击变换B内容</button>
            <B message={this.state.msg}/>
          </div>
        )
      }
    }
    class B extends React.Component{
      // 获取 props 值
      // 有个坑， 页面刚挂在时传的 props 这个是不会调用的
      // 只有你再次更新 props 时才会调用， 比如弄个点击事件， 触发后才会更新
      componentWillReceiveProps(props) {
        console.log('componentWillReceiveProps', props)
      }
      render() {
        // onChange: 返回的只能是个函数， 
        return (
          <div>
            <div>我是B组件</div>
            <div>来自父组件的：{this.props.message} </div>
          </div>
        )
      }
    }
    // 此章节就相当于 Vue 的 v-model 
    ReactDOM.render(<A/>, document.getElementById('root'))
  </script>
</body>

</html>